﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace SICON_INT.PaginasWebs
{
    public partial class frm_PuestoPermiso : System.Web.UI.Page
    {
        /// <summary>
        /// The form accion
        /// </summary>
        static string FormAccion = "";
        /// <summary>
        /// The mensaje error
        /// </summary>
        public string MensajeError = "";
        /// <summary>
        /// The codigo
        /// </summary>
        static int codigo = 0;
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// 
        public string seleccion = "";
        static int codigoModulo = 0;
        static int codigoPuesto = 0;
        int codigoPermiso = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Session["FormAccion"] != null)
                {
                    FormAccion = Session["FormAccion"].ToString();

                }


                if (Session["Codigo"] != null)
                {
                    codigoPuesto = Convert.ToInt32(Session["Codigo"]);

                }


                if (!IsPostBack)
                {

                    if (FormAccion == "Editar")
                    {
                        if (codigoPuesto != 0)
                        {
                            //CargarEditar();
                            Cargar_Lista_Modulos();
                            lbxModulo.SelectedValue = "1";
                            codigoModulo = Convert.ToInt32(lbxModulo.SelectedValue);
                            CargarGrid();
                        }
                    }

                }

            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
        }

        public void CargarGrid()
        {

            DataTable dt = new DataTable();
            dt.Columns.Add("Codigo Linea", Type.GetType("System.String"));
            dt.Columns.Add("Permiso", Type.GetType("System.String"));
            dt.Columns.Add("Descripción", Type.GetType("System.String"));


            int cont = dt.Columns.Count;
            for (int i = 0; i < listaPermisos().Count; i++)
            {
                dt.Rows.Add();
                dt.Rows[dt.Rows.Count - 1]["Codigo Linea"] = listaPermisos()[i].PUEPER_codLinea;
                dt.Rows[dt.Rows.Count - 1]["Permiso"] = listaPermisos()[i].PUEPER_nombre_permiso;
                dt.Rows[dt.Rows.Count - 1]["Descripción"] = listaPermisos()[i].PUEPER_descripcion;


            }

            gvPuestoPermiso.DataSource = dt;
            gvPuestoPermiso.DataBind();
        }

        private List<WSGestion.MOD_Puesto_Permiso> listaPermisos()
        {

            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            List<WSGestion.MOD_Puesto_Permiso> listaPermisos = wsgest.SEL_Permisos_By_IDMOD_IDPUE(codigoModulo, codigoPuesto).ToList();
            return listaPermisos;

        }

        private void Cargar_Lista_Modulos()
        {
            try
            {
                WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
                List<WSGestion.MOD_Puesto_Permiso> ListaModulos = wsgest.SEL_Modulos().ToList();
                this.lbxModulo.DataSource = ListaModulos;
                this.lbxModulo.DataValueField = "PUEPER_codModulo";
                this.lbxModulo.DataTextField = "PUEPER_nombre_modulo";
                this.lbxModulo.DataBind();

                List<WSGestion.MOD_Puesto_Permiso> ListaPermisos = wsgest.SEL_Permiso_By_Modulo().ToList();
                this.lbxPermisos.DataSource = ListaPermisos;
                this.lbxPermisos.DataValueField = "PUEPER_codPermiso";
                this.lbxPermisos.DataTextField = "PUEPER_nombre_permiso";
                this.lbxPermisos.DataBind();
            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }


        }

        protected void lbxModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            codigoModulo = Convert.ToInt32(lbxModulo.SelectedValue);
            //codigoPuesto = Convert.ToInt32(ddlPuestos.SelectedValue);
            CargarGrid();
        }

        protected void btnEliminarPermisos_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (codigo == 0)
                {
                    MensajeError = "No se ha seleccionado un permiso";
                }
                else
                {
                    WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                    wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
                    wsgest.DEL_Puesto_Permiso_Modulo(codigo);
                    CargarGrid();
                }
            }
            catch (Exception exc)
            {

                MensajeError = exc.Message.ToString();
            }
        }

        protected void btnGuardarPermisoPuesto_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
                codigoModulo = Convert.ToInt32(lbxModulo.SelectedValue);
                //codigoPuesto = Convert.ToInt32(ddlPuestos.SelectedValue);
                codigoPermiso = Convert.ToInt32(lbxPermisos.SelectedValue);
                int cant_perm = wsgest.SEL_Puesto_Permiso_ModuloByIDs(codigoPuesto, codigoPermiso, codigoModulo);
                if (cant_perm == 0)
                {
                    if (wsgest.CRE_Puesto_Permiso_Modulo(codigoPuesto, codigoPermiso, codigoModulo))
                    {
                        MensajeError = "Modulo " + lbxModulo.SelectedItem + "Puesto " + codigo.ToString() + "Permiso " + lbxPermisos.SelectedItem + " se han agregado.";
                        CargarGrid();
                    }
                    else
                    {
                        MensajeError = "Procedimiento Almacenado no aceptado";
                    }

                }

                else
                {
                    MensajeError = "No es valido introducir el mismo permiso para este modulo y puesto. Por favor, intente con otro de la lista.";
                }

            }
            catch (Exception exc)
            {

                MensajeError = exc.Message.ToString();
            }
        }

        protected void btnSalir_Click(object sender, ImageClickEventArgs e)
        {
            Server.Transfer("frm_GridPuestosPermisos.aspx");
        }

        protected void gvPuestoPermiso_SelectedIndexChanged(object sender, EventArgs e)
        {
            seleccion = gvPuestoPermiso.SelectedRow.Cells[2].Text;
            codigo = Convert.ToInt32(gvPuestoPermiso.SelectedRow.Cells[1].Text);
            MensajeError = "Se ha seleccionado el permiso: " + seleccion;
        }
    }
}